package org.wheel.plugins.toolkit.util.sql.association.bean;

import lombok.*;
import org.wheel.plugins.toolkit.sql.annon.Id;
import org.wheel.plugins.toolkit.sql.annon.Table;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 教师主表
 * </p>
 *
 * @author lanjf2000
 * @since 2025-10-02
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("t_teacher")
@EqualsAndHashCode(callSuper = false)
public class Teacher implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 数据主键
     */
    @Id
    private String id;

    /**
     * 工号,唯一,避免名字重复
     */
    private String empNo;
    /**
     * 登录账号
     */
    private String loginName;
    /**
     * 真实姓名
     */
    private String name;

    /**
     * 登录后台账号
     */
    private String mobile;

    /**
     * 脱敏掩码，前端直接展示;例如：138****5678
     */
    private String phoneMask;

    /**
     * 不可逆哈希，用于校验;例如：$2a$12$......
     */
    private String phoneHash;

    /**
     * 前 3 后 4 哈希，用于查询;例如：$2a$10$......
     */
    private String phoneSegmentHash;

    /**
     * bcrypt
     */
    private String password;

    /**
     * 科目字典 ID
     */
    private String subjectId;

    /**
     * 头像
     */
    private String avatarUrl;

    /**
     * 性别：0 未知 1 男 2 女
     */
    private String gender;

    /**
     * 用于计算年龄
     */
    private Date birthday;

    /**
     * 常驻城市
     */
    private String cityCode;

    /**
     * 一句话简介，列表页露出
     */
    private String intro;

    /**
     * 0 停用 1 启用 2 注销
     */
    private Integer status;

    /**
     * 页面显示标记：0-显示；1-不显示
     */
    private Integer avaFlag;

    /**
     * 删除标记：0-未删除；1-已删除
     */
    private Integer delFlag;

    /**
     * 创建人
     */
    private String createdBy;

    /**
     * 创建时间
     */
    private Date createdTime;

    /**
     * 更新人
     */
    private String updatedBy;

    /**
     * 更新时间
     */
    private Date updatedTime;
}
